//严格判断身份证号
function checkIdentityReg(idcard){ 
	var Errors=new Array("验证通过!","身份证号码位数不对!","身份证号码出生日期超出范围或含有非法字符!","身份证号码校验错误!","身份证地区非法!"); 
	var area={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"xinjiang",71:"台湾",81:"香港",82:"澳门",91:"国外"}; 
	var idcard,Y,JYM; 
	var S,M; 
	var idcard_array = new Array(); 
	idcard_array = idcard.split(""); 
	if(area[parseInt(idcard.substr(0,2))]==null) return false;//Errors[4]; 
	switch(idcard.length){ 
		case 15: 
			if ((parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){ 
				ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//闰年出生日期的合法性正则表达式 
			} 
			else{ 
				ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//平年出生日期的合法性正则表达式 
			} 
			if(ereg.test(idcard)) 
				return true;//Errors[0]; //正确
			else 
				return false;//Errors[2]; 
			break; 
		case 18: 
			if( parseInt(idcard.substr(6,4)) % 4 == 0 || ( parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){ 
				ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式 
			} 
			else{ 
				ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式 
			} 



			if(ereg.test(idcard)){ 
				S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 + parseInt(idcard_array[7]) * 1 + parseInt(idcard_array[8]) * 6 + parseInt(idcard_array[9]) * 3 ; 
				Y = S % 11; 
				M = "F"; 
				JYM = "10X98765432"; 
				M = JYM.substr(Y,1); 
				if(M == idcard_array[17]) 
					return true;//Errors[0]; //正确
				else 
					return false;//Errors[3]; 
			} 
			else 
				return false;//Errors[2]; 
			break; 
		default: 
			return false;//Errors[1]; 
			break; 
	} 
} 


//判断身份证号码
function checkIdentity(element){
	if(isIdentity.exec(element))
		return true;
	else
		return false;
}

//判断手机和电话号码
function checkPhone(element){
	if(isMobile.exec(element)|| isTel1.exec(element))
		return true;
	else
		return false;
}

//鼠标移出一行记录时改变其颜色
function mouseOut(element) {
	element.style.backgroundColor = "#FFFFFF";
}

//鼠标经过一行记录时改变其颜色
function mouseOver(element) {
	element.style.backgroundColor = "#FFFFD4";
}

//显示操作说明
function setExplainInfo(str) {
	var explaininfo = document.getElementById("explaininfo");
	explaininfo.innerHTML = str;
}

//关闭操作说明
function flush() {
	var explaininfo = document.getElementById("explaininfo");
	explaininfo.innerHTML = "&nbsp;";
}

//全选反选复选框
function selectCheckbox(id){
	var selector=document.getElementById("selector");
	var ids=document.getElementsByName(id);
	for(var i=0;i<ids.length;i++){
		ids[i].checked=selector.checked;
	}
}

//document.getElementById()缩写
function $$(){
	var elements = new Array();
	for(var i=0;i<arguments.length;i++){
		var element = arguments[i];
		if(typeof element=='string')
			element = document.getElementById(element);
		if (arguments.length==1)
			return element;
		elements.push(element);
	}
	return elements; 
}

//删除左右两端的空格
function trim(str) {
	return str.replace(/(^\s*)|(\s*$)/g, "");
}

//日期格式
Date.prototype.format = function(format)
{
	var o = 
		{
			"M+" : this.getMonth()+1, //month
			"d+" : this.getDate(),    //day
			"h+" : this.getHours(),   //hour
			"m+" : this.getMinutes(), //minute
			"s+" : this.getSeconds(), //second
			"q+" : Math.floor((this.getMonth()+3)/3), //quarter
			"S" : this.getMilliseconds() //millisecond
		}
		if(/(y+)/.test(format)) 
		format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4 - RegExp.$1.length));
		for(var k in o)
		if(new RegExp("("+ k +")").test(format))
		format = format.replace(RegExp.$1,RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
		return format;
}

//校验是否全由数字组成
var isDigit=/^[0-9]+$/;

//校验登录名：只能输入5-20个以字母开头、可带数字、“_”、“.”的字串
var isRegisterUserName=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;

//校验用户姓名：只能输入1-30个以字母开头的字串
var isTrueName=/^[a-zA-Z]{1,30}$/;

//校验密码：只能输入6-20个字母、数字、下划线
var isPasswd=/^(\w){6,20}$/;

//校验普通电话、传真号码：可以“+”开头，除数字外，可含有“-”
var isTel=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
//校验普通电话含有“-”;如0760-88888888
var isTel1=/[0-9]{1}[0-9]{2,3}-[1-9]{1}[0-9]{5,8}/;

//校验邮政编码
var isPostCode=/[1-9]\d{5}(?!\d)/;

//校验IP地址
var isIP=/^[0-9.]{1,20}$/;

//校验EMAIL地址
var isEmail=/^[\w-]+(.[\w-]+)*@[\w-]+([.]{1}[\w-]+)+$/;

//校验注册帐号(6-20位，以字母开头，字母、数字或下划线的组合)
var isAccount=/^[a-zA-Z]{1}([a-zA-Z0-9]|[_]){5,19}$/;

//校验密码（6-20位，字母、数字的组合）
var isPassword=/^[a-zA-Z0-9]{6,20}$/;

//非负整数(正整数、0)
var isNonNegativeInteger=/^\d+$/;

//正整数
var isPositiveInteger=/^[0-9]*[1-9][0-9]*$/;

//非正整数(负整数、0)
var isNonPositiveInteger=/^((-\d+)|(0+))$/;

//负整数
var isNegativeInteger=/^-[0-9]*[1-9][0-9]*$/;

//整数
var isInteger=/^-?\d+$/;

//非负浮点数(正浮点数、0)
var isNonNegativeFloat=/^\d+(.\d+)?$/;

//正浮点数
var isPositiveFloat=/^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$/;

//非正浮点数(负浮点数、0)
var isNonPositiveFloat=/^((-\d+(.\d+)?)|(0+(.0+)?))$/;

//负浮点数
var isNegativeFloat=/^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/;

//浮点数
var isFloat=/^(-?\d+)(.\d+)?$/;

//由26个英文字母组成的字符串
var isCharacter=/^[A-Za-z]+$/;

//由26个英文字母的大写组成的字符串
var isUpperCharacter=/^[A-Z]+$/;

//由26个英文字母的小写组成的字符串
var isLowerCharacter=/^[a-z]+$/;

//由数字和26个英文字母组成的字符串
var isDigitalEnglish=/^[A-Za-z0-9]+$/;

//由数字、26个英文字母或者下划线组成的字符串
var isDigitalEnglishUnderline=/^\w+$/;

//判断日期yyyy-mm-dd
var isDate=/^(\d{4})\-(\d{2})\-(\d{2})$/;

//判断手机号码
var isMobile=/^0{0,1}(13[0-9]|15[0-9]|18[0-9])[0-9]{8}$/;

//身份证号码18位
var isIdentity=/(^\d{15}$)|(^\d{17}(\d|X)$)/;
